Cloud computing and virtual machine (VM) networks have greatly improved the flexibility of resource allocation to address workloads in computational centers. The flexibility is born from the ability to utilize a veritable number of physical machines and VM instances depending on the demand of the workload. Typically, when a process is started in a VM network, a process begins with a low resource demand (e.g., run on one VM). As the workload handled by the process increases, additional VMs can be instantiated to support the process as needed. For example, a simple calculation is initially supported by a single VM. When requests for the calculation begin to be made at a rate faster than the VM can perform the calculation, a second VM is instantiated to perform the calculation in parallel with the first VM.
In a typical VM network, workload can increase and decrease quickly. Therefore, rapid instantiation of additional VMs is desirable. However, typically, configuration of newly instantiated VMs can be a time consuming process and often limits the responsiveness of a VM network to an increase in workload. Alternatively, a new VM (child VM) can be instantiated by cloning a VM (parent VM) already configured to support the process. By cloning a parent VM, the settings and state of the parent VM can be quickly mapped to the child VM without having to configure the child VM. Thus, new child VMs can be created with the appropriate settings and state needed by the process.
However, the creation of new child VMs places further demand on the resources utilized by existing VMs, which can negate the benefits of cloning or result in underperformance by the existing VMs. In order to manage resource utilization, VMs may need to be migrated or moved throughout the VM network. For example, if a parent VM and several child VMs instantiated on the same host computer are over-utilizing the memory available in the host computer (e.g., demanding more memory than is available), then a subset of VMs may need to be migrated to another host computer.